package moduloRemoto.pojo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

@Entity
@Table(name="Colaborador")
public class Colaborador implements Serializable
{
	@Transient
	private static final long serialVersionUID = 1L;
	
	
	@Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(nullable=false, columnDefinition="INT(4)")
    private int idCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(16)")
    private String codigoCol;
	
	@Column(nullable=false, columnDefinition="VARCHAR(130)")
    private String nomeCol;
	
	@Column(nullable=false, columnDefinition="VARCHAR(15)")
    private String cpfCol;

	@Column(nullable=true, columnDefinition="DATE")
	@Temporal(value = TemporalType.DATE)
	private Date dataNascCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(10)")
    private String telefoneCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(10)")
    private String celularCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(60)")
    private String bairroEnderecoCol;
	
	@Column(nullable=true, columnDefinition="INT(5)")
    private Integer numeroEnderecoCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(120)")
    private String enderecoCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(12)")
    private String complementoCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(30)")
    private String estadoEnderecoCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(30)")
    private String cidadeEnderecoCol;
	
	@Column(nullable=true, columnDefinition="CHAR(1)")
    private char sexoCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(30)")
    private String emailCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(12)")
    private String cepEnderecoCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(60)")
    private String cargoCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(255)")
    private String especialidadesCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(30)")
    private String usuarioCol;
	
	@Column(nullable=true, columnDefinition="VARCHAR(30)")
    private String senhaCol;

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "colaborador")
	private List<Atividade> listaAtividades = new ArrayList<Atividade>(0);
	
	@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
	@JoinTable(name = "Projeto_Colaborador",
			joinColumns = { @JoinColumn(name = "idPro", nullable = false, updatable = false) },
			inverseJoinColumns = { @JoinColumn(name = "idCol", nullable = false, updatable = false) })
	private List<Projeto> listaProjetos = new ArrayList<Projeto>(0);

	
	// Construtor
	public Colaborador()
	{
	}


	// Getters and Setters
	public final int getIdCol()
	{
		return idCol;
	}

	public final void setIdCol(int idCol)
	{
		this.idCol = idCol;
	}

	public final String getCodigoCol()
	{
		return codigoCol;
	}

	public final void setCodigoCol(String codigoCol)
	{
		this.codigoCol = codigoCol;
	}

	public final String getNomeCol()
	{
		return nomeCol;
	}

	public final void setNomeCol(String nomeCol)
	{
		this.nomeCol = nomeCol;
	}

	public final Date getDataNascCol()
	{
		return dataNascCol;
	}

	public final void setDataNascCol(Date dataNascCol)
	{
		this.dataNascCol = dataNascCol;
	}



	public String getTelefoneCol() {
		return telefoneCol;
	}


	public void setTelefoneCol(String telefoneCol) {
		this.telefoneCol = telefoneCol;
	}


	public String getCelularCol() {
		return celularCol;
	}


	public void setCelularCol(String celularCol) {
		this.celularCol = celularCol;
	}


	public final String getBairroEnderecoCol()
	{
		return bairroEnderecoCol;
	}

	public final void setBairroEnderecoCol(String bairroEnderecoCol)
	{
		this.bairroEnderecoCol = bairroEnderecoCol;
	}

	public final Integer getNumeroEnderecoCol()
	{
		return numeroEnderecoCol;
	}

	public final void setNumeroEnderecoCol(Integer numeroEnderecoCol)
	{
		this.numeroEnderecoCol = numeroEnderecoCol;
	}

	public final String getEnderecoCol()
	{
		return enderecoCol;
	}

	public final void setEnderecoCol(String enderecoCol)
	{
		this.enderecoCol = enderecoCol;
	}

	public final String getComplementoCol()
	{
		return complementoCol;
	}

	public final void setComplementoCol(String complementoCol)
	{
		this.complementoCol = complementoCol;
	}

	public final String getEstadoEnderecoCol()
	{
		return estadoEnderecoCol;
	}

	public final void setEstadoEnderecoCol(String estadoEnderecoCol)
	{
		this.estadoEnderecoCol = estadoEnderecoCol;
	}

	public final String getCidadeEnderecoCol()
	{
		return cidadeEnderecoCol;
	}

	public final void setCidadeEnderecoCol(String cidadeEnderecoCol)
	{
		this.cidadeEnderecoCol = cidadeEnderecoCol;
	}

	public final char getSexoCol()
	{
		return sexoCol;
	}

	public final void setSexoCol(char sexoCol)
	{
		this.sexoCol = sexoCol;
	}

	public final String getEmailCol()
	{
		return emailCol;
	}

	public final void setEmailCol(String emailCol)
	{
		this.emailCol = emailCol;
	}

	public final String getCepEnderecoCol()
	{
		return cepEnderecoCol;
	}

	public final void setCepEnderecoCol(String cepEnderecoCol)
	{
		this.cepEnderecoCol = cepEnderecoCol;
	}

	public final String getCargoCol()
	{
		return cargoCol;
	}

	public final void setCargoCol(String cargoCol)
	{
		this.cargoCol = cargoCol;
	}

	public final String getEspecialidadesCol()
	{
		return especialidadesCol;
	}

	public final void setEspecialidadesCol(String especialidadesCol)
	{
		this.especialidadesCol = especialidadesCol;
	}

	public final String getUsuarioCol()
	{
		return usuarioCol;
	}

	public final void setUsuarioCol(String usuarioCol)
	{
		this.usuarioCol = usuarioCol;
	}

	public final String getSenhaCol()
	{
		return senhaCol;
	}

	public final void setSenhaCol(String senhaCol)
	{
		this.senhaCol = senhaCol;
	}
	
	public String getCpfCol() {
		return cpfCol;
	}


	public void setCpfCol(String cpfCol) {
		this.cpfCol = cpfCol;
	}

	public final List<Atividade> getListaAtividades()
	{
		return listaAtividades;
	}

	public final void setListaAtividades(List<Atividade> listaAtividades)
	{
		this.listaAtividades = listaAtividades;
	}

	public final List<Projeto> getListaProjetos()
	{
		return listaProjetos;
	}

	public final void setListaProjetos(List<Projeto> listaProjetos)
	{
		this.listaProjetos = listaProjetos;
	}
		
}